package jp.co.dailyReport.weeklyReport;

import java.util.Calendar;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * 週報クラス
 */
public class WeeklyReport {

	//週報ID
	protected int weeklyReportId;
	//プロジェクトID
	protected int projectId;
	//社員ID
	protected int staffId;
	//作業開始日
	protected Calendar workDateStart;
	//作業終了日
	protected Calendar workDateEnd;
	//作業時間合計
	protected double totalHoursWorked;
	//問題点
	protected String problem;
	//感想
	protected String comment;
	//削除フラグ
	protected boolean delFlg;
	//更新日
	protected Calendar upDay;
	//週報作業項目
	protected List weeklyReportWorkItemList = new ArrayList();

	/**
	 * 週報IDを設定します。
	 * 
	 * @param weeklyReportId 週報ID
	 */
	public void setWeeklyReportId(int weeklyReportId) {
		this.weeklyReportId = weeklyReportId;
	}

	/**
	 * 週報IDを取得します。
	 * 
	 * @return weeklyReportId
	 */
	public int getWeeklyReportId() {
		return weeklyReportId;
	}

	/**
	 * プロジェクトIDを設定します。
	 * 
	 * @param projectId プロジェクトID
	 */
	public void setProjectId(int projectId) {
		this.projectId = projectId;
	}

	/**
	 * プロジェクトIDを取得します。
	 * 
	 * @return projectId
	 */
	public int getProjectId() {
		return projectId;
	}

	/**
	 * 社員IDを設定します。
	 * 
	 * @param staffId 社員ID
	 */
	public void setStaffId(int staffId) {
		this.staffId = staffId;
	}

	/**
	 * 社員IDを取得します。
	 * 
	 * @return staffId
	 */
	public int getStaffId() {
		return staffId;
	}

	/**
	 * 作業開始日を設定します。
	 * 
	 * @param workDateStart 作業開始日
	 */
	public void setWorkDateStart(Calendar workDateStart) {
		this.workDateStart = workDateStart;
	}

	/**
	 * 作業開始日を取得します。
	 * 
	 * @return workDateStart
	 */
	public Calendar getWorkDateStart() {
		return workDateStart;
	}

	/**
	 * 作業終了日を設定します。
	 * 
	 * @param workDateEnd
	 */
	public void setWorkDateEnd(Calendar workDateEnd) {
		this.workDateEnd = workDateEnd;
	}

	/**
	 * 作業終了日を取得します。
	 * 
	 * @return workDateEnd
	 */
	public Calendar getWorkDateEnd() {
		return workDateEnd;
	}

	/**
	 * 作業時間合計を設定します。
	 * 
	 * @param totalHoursWorked
	 */
	public void setTotalHoursWorked(double totalHoursWorked) {
		this.totalHoursWorked = totalHoursWorked;
	}

	/**
	 * 作業時間合計を取得します。
	 * 
	 * @return totalHoursWorked
	 */
	public double getTotalHoursWorked() {
		return totalHoursWorked;
	}

	/**
	 * 問題点を設定します。
	 * 
	 * @param problem
	 */
	public void setProblem(String problem) {
		this.problem = problem;
	}

	/**
	 * 問題点を取得します。
	 * 
	 * @return problem
	 */
	public String getProblem() {
		return problem;
	}

	/**
	 * 感想を設定します。
	 * 
	 * @param comment
	 */
	public void setComment(String comment) {
		this.comment = comment;
	}

	/**
	 * 感想を取得します。
	 * 
	 * @return comment
	 */
	public String getComment() {
		return comment;
	}

	/**
	 * 削除フラグを設定します。
	 * 
	 * @param delFlg
	 */
	public void setDelFlg(boolean delFlg) {
		this.delFlg = delFlg;
	}

	/**
	 * 削除フラグを取得します。
	 * 
	 * @return delFlg
	 */
	public boolean isDelFlg() {
		return delFlg;
	}

	/**
	 * 更新日を設定します。
	 * 
	 * @param upDay
	 */
	public void setUpDay(Calendar upDay) {
		this.upDay = upDay;
	}

	/**
	 * 更新日を取得します。
	 * 
	 * @return upDay
	 */
	public Calendar getUpDay() {
		return upDay;
	}

	/**
	 * 週報作業項目オブジェクトの配列を設定します。
	 * 
	 * @param weeklyReportWorkItems
	 */
	public void setWeeklyReportWorkItems(WeeklyReportWorkItem[] weeklyReportWorkItems) {
		for(int i=0; i<weeklyReportWorkItems.length; i++){
			weeklyReportWorkItemList.add(weeklyReportWorkItems[i]);
		}
	}

	/**
	 * 指定した要素番号の週報作業項目オブジェクトを取得します。
	 * 
	 * @param n 要素番号
	 * @return weeklyReportWorkItemList
	 */
	public WeeklyReportWorkItem getWeeklyReportWorkItem(int n) {
	  return (WeeklyReportWorkItem)weeklyReportWorkItemList.get(n);
	}

	/**
	 * 週報作業項目オブジェクトの配列を取得します。
	 * 
	 * @return weeklyReportWorkItems
	 */
	public WeeklyReportWorkItem[] getWeeklyReportWorkItems() {

		List weeklyReportWorkItems = new ArrayList();
		Iterator it = weeklyReportWorkItemList.iterator();
		while(it.hasNext()){
			WeeklyReportWorkItem weeklyReportWorkItem = (WeeklyReportWorkItem)it.next();
			weeklyReportWorkItems.add(weeklyReportWorkItem);
		}
	  return (WeeklyReportWorkItem[])weeklyReportWorkItems.toArray(new WeeklyReportWorkItem[0]);
	}

	/**
	 * 週報作業項目オブジェクトの配列を削除します。
	 */
	public void initWeeklyReportWorkItems(){
	  this.weeklyReportWorkItemList.clear();
	}

}
